perm filename METNUM.FAI[RST,LCS] blob
sn#207673 filedate 1976-03-23 generic text, type T, neo UTF8
24300 TITLE METNUM ; SUBROUTINE METER
24400 ENTRY METER,MAKNUM ;COMMON R2,JA,CENTR,J2,RJQ(20),J3,JQ(19)/STF/RSTFAC(-3/4),RSTJ2
24500 METER: 0 ; COMMON/POSI/STFF(-3/4),JJ2,POS
24600 ; EQUIVALENCE (R4,RJQ(2)),(R7,RJQ(5)),(R6,RJQ(4)),(R5,RJQ(3))
24700 ; 1,(R8,RJQ(6)),(RX3,RJQ(20)),(J10,JQ(7)),(J7,JQ(5)),(R9,RJQ(7))
24900 ; PARAMS 18 / STF / POS / VERT HGT./ TOP NUM/ BOT NUM/ SIZE FAC.
25100 SKIPN 1,.COMM.+=8 ; CALL NOZERO(R7)
25110 MOVSI 1,201400
25200 MOVE 13,.COMM.+=24 ; 13 IS JZ=J3
25300 MOVSI 12,204400 ;RY=R4+8.*R7
25310 FMPR 12,1
25320 FADR 12,.COMM.+5 ; 12 IS RY
25400 ; HEIGHT
25500 MOVE 14,.COMM.+7 ; 14 IS RW=R6
25600 ; BOTTOM NUM
25700 ; P5=TOP NUM
25800 MOVEM 1,.COMM.+7 ; (1 IS R7) R6=R7
25900 MOVE 11,1 ; 11 IS RR6=R6
26000 ; SIZE
26100 ; FOR BDR40 -- OR =1
26200 SETZ 10, ; 10 IS M=0
26300 MOVEM 12,.COMM.+5 ; R4=RY
26400 SETZM .COMM.+=8 ;2 R7=0
26500 ; R7=0 FOR BDR FONT??
26700 MOVE .COMM.+6 ;IF(R5.LT.90)GO TO 3
26800 CAMGE [90.0] ; 99 AS METER = 'C' 98=ALLA BREVE (CUT TIME)
26850 JRST MET3
26900 SETO 10, ;M=-1
27000 CAME [98.0] ;IF(R5.NE.98)GO TO 4
27100 JRST MET4 ; NEXT FOR LINE THROUGH C.
27200 MOVE .COMM.+7 ; RZ=R6
27250 MOVEM RZ#
27300 MOVE .COMM.+5 ; RY=R4
27350 MOVEM RY#
27400 MOVE STF+=9 ;RA=POS
27450 MOVEM RA#
27500 MOVE .COMM.+=23 ; R6=RX3
27550 MOVEM .COMM.+7 ;TO LINE UP WITH R3
27700 MOVEI 2 ;J10=2
27750 MOVEM .COMM.+=31 ;FOR THICK LINE
28000 MOVN [3.8] ;R4=R4-3.8
28025 FADRM .COMM.+5
28050 FADR [5.6] ;R5=R4+5.6
28075 MOVEM .COMM.+6
28100 SETZM .COMM.+=28 ;J7=0
28200 SETZM .COMM.+=9 ;R8=0
28300 JSA 16,ITMSUB ;CALL ITMSUB
28400 MOVE RA ;POS=RA
28450 MOVEM STF+=9
28500 MOVE RY ;R4=RY
28550 MOVEM .COMM.+5
28600 MOVE RZ ;R6=RZ
28650 MOVEM .COMM.+7 ;GET BACK THE RIGHT PARAMS.
28900 MET4: MOVE [9999.0] ;4 R5=9999.
28950 MOVEM .COMM.+6 ;TO CENTER 12S AND 16S
29200 3 CALL MAKNUM(R5)
29300 IF(M)RETURN
29400 C STICK AROUND FOR BOTTOM NUM
29500 M=-1
29600 R4=RY-4.*RR6
29700 R6=RR6
29800 R5=RW
29900 C GET BOTTOM NUM
30000 J3=JZ
30100 R8=0
30200 GO TO 2
30300 END
30400
30500 CF SUBROUTINE RNOTE(X)
30600 CF COMMON /PTR/PWDS(250),ITEM,L,I,IX/XRN/RN(4000)
30700 CF X=RN(IFIX(PWDS(IFIX(AMOD(X,1000.))))+2)
30800 CF END
30900
31000 SUBROUTINE MAKNUM(RNUM)
31100 COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)/STF/RSTFAC(-3/4),RSTJ2
31200 EQUIVALENCE (J3,JQ(1)),(R4,RJQ(2)),(R8,RJQ(6)),(R7,RJQ(5))
31300 1,(R6,RJQ(4)),(R5,RJQ(3)),(R7,RJQ(5)),(JQ(15),B),(JQ(16),C)
31400 1 ,(J8,JQ(6)),(J10,JQ(8)),(R3,RJQ(1)),(J5,JQ(3)),(RJY,JQ(19))
31500 1 ,(J7,JQ(5)),(J6,JQ(4)),(R9,RJQ(7))
31600 DATA RS/10.0/,RBX/1.0/
31700 RB8=R8
31800 J3X=J3
31900 C P7=0=BDR40; =1=BDI40; =2=PRIM.
32000 CALL NOZERO(R6)
32100 R5=R6
32200 C UPPER CASE - BDR40
32300 R6=48000000.0+(R7+50.)*10000.
32400 R7=99999999.0
32500 C BLANKS
32600 R8=R7
32700 IF(RNUM.NE.9999.)GO TO 2
32800 C NEXT FOR 'C'OMMON TIME
32900 RNUM=12.
33000 C MAKES A 'C'
33100 R4=R4-2.2
33200 C .2 FOR BAD POS. OF LETTERS
33300 GO TO 4
33400
33500 2 ONE=0
33600 RNUM=IFIX(RNUM)
33700 C SO MISTAKES (i.e. 2.2) WON'T BREAK THE PROG.
33800 IF(RNUM.EQ.1.)ONE=3.
33900 IF(RNUM.GT.9.)GO TO 3
34000 C JUMP FOR 2 OR 3 DIGIT NUMBER
34100 4 R6=R6+RNUM*100.+47.
34200 C PUTS BLANK ON END (.47)
34300 GO TO 1
34400
34500 3 RJY=10.
34600 IF(RNUM.GE.100.)RJY=100.
34700 B=IFIX(RNUM/RJY)
34800 C=AMOD(RNUM,RJY)
34900 IF(RNUM.LT.100)GO TO 7
35000 D=IFIX(C/10.)
35100 C=AMOD(C,10.)
35200 IF(C.EQ.1.)ONE=ONE+3.
35300 R7=C*1000000.+999999.0
35400 C=D
35500 7 R6=R6+B*100.+C
35600 IF(B.EQ.1.)ONE=ONE+3.
35700 IF(C.EQ.1.)ONE=ONE+3.
35800 B=R5
35900 IF(RNUM.GE.100.)B=B*2
36000 J3=J3-RS*RSTJ2*B
36100 C FOR 2 DIGIT NUMBER
36200 CCC IF(RNUM.GE.20.)GO TO 6
36300 CCC IF(JA.EQ.18)GO TO 6
36400 CCC RJY=5.6
36500 CCC IF(RNUM.GT.11.)RJY=3.
36600 C ADJUSTS FOR 11, ETC.
36700 CCC J2=J2+RJY*R5*RSTJ2
36800 CC6 J3=J2
36900 1 J3=J3+ONE*R5*RSTJ2
37000 C CENTERS THE NUMBER '1'
37100 CALL ALPHA
37200 J3=J3X
37300 IF(RB8.EQ.0)RETURN
37400 C NEXT FOR CIRCLES AND BOXES AROUND NUMBERS.
37500 R3=J3-R5
37600 IF(J10.EQ.0)J10=1
37700 C USE J10 FOR EVEN THICKER BOX AND CIRC.
37800 IF(RNUM.GT.9)R3=R3+R5*RBX
37900 C TO SET CENTER
38000 IF(RB8.EQ.2)GO TO 5
38100 R4=R4+R5+.1+.05/R5
38200 C END OF ABOVE IS FOR SMALL CIRCLES.
38300 B=4.5
38400 IF(RNUM.GE.100.)B=5.5
38500 R5=R5*B
38600 JA=12
38700 J6=0
38800 J7=0
38900 J8=J10
39000 CALL CENTX
39100 CALL SLUR
39200 RETURN
39300
39400 5 JA=4
39500 B=6
39600 R9=0
39700 IF(RNUM.LT.100.)GO TO 8
39800 B=9.
39900 R9=R5*6.
40000 C MAKES RECTANGLE IF ≥100
40100 8 R4=R4+R5*.7+.1
40200 R8=R5*B
40300 J5=50
40400 CALL ITMSUB
40500 C RETURNS ORIG. HORIZ. POS.
40600 END
40700 C MAKES ONLY 1 TO 3 DIGIT NUMS NOW. EXPAND LATER.
40800
40900 CC FUNCTION IABS(N)
41000 C BECAUSE IABS IN LIB40 HAS A BUG.
41100 CC IABS=N
41200 CC IF(N)IABS=-N
41300 CC END
41400
41500 CF SUBROUTINE DRWNT(RMINI)
41600 CF COMMON /STF/RSTFAC(-3/4),RSTJ2
41700 CF COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
41800 CF EQUIVALENCE (JE,JQ(3)),(RJD,RJQ(2)),(R6,RJQ(4)),
41900 CF 1 (JG,JQ(5)),(R7,RJQ(5)),(RJE,RJQ(3)),(RJZ,RJQ(20))
42000 CF 1 ,(JI,JQ(7)),(R9,RJQ(7)),(JH,JQ(6))
42100 CF RJX=CENTR
42200 CF JH=0
42300 C JH=0 SO IT WILL FILL. (P8 IN 'CLEFS')
42400 CC CENTR=CENTR-21.*RSTJ2
42500 CF RA=R6
42600 CF R6=.5*RMINI/RSTJ2
42700 CF R7=R6
42800 CF RJD=RJZ-3
42900 CCXX IF(RSTJ2.NE.RMINI)RJD=RJZ+.43*(RJZ-3.)-.3
43000 C ADJUSTS POSITION FOR MINI ACCIDENTALS (..??!!)
43100 CF JI=0
43200 CF CALL CLEFS
43300 CF JI=R9
43400 C ↑↑↑↑↑↑ NEEDED??
43500 C FIX THIS???? ↑↑↑↑↑
43600 C FOR WHITE NOTES AND ACCIS ON PLOTTER.
43700 CF CENTR=RJX
43800 CF R6=RA
43900 CF R7=JG
44000 CF JE=RJE
44100 CF END
44200
44300 CC FUNCTION RHORZ(R)
44400 CC RHORZ=R*5.96-596.
44500 CC END
44600
44700 CF SUBROUTINE RDRAW(I,S,XY,X,R3,CENTR,RMINI)
44800 C TO X,Y INTO ONE WORD
44900 CF DIMENSION XY(1)
45000 CF DO 2 K=I,IFIX(S)
45100 CF L=2
45200 CF Y=XY(K)
45300 CF IF(Y.LT.1000.)GO TO 3
45400 CF L=3
45500 CF Y=Y-1000.
45600 C >1000 = INVIS. LINE
45700 CF3 M=Y
45800 CF Y=(Y-M)*1000.
45900 CF IF(Y.GT.100.)Y=100-Y
46000 C Y NUMBERS .GT.100 ARE NEG.
46100 CF B=Y*X+CENTR
46200 CF IF(M.GT.60)M=100-M
46300 CF A=M*RMINI+R3
46400 CF2 CALL LINES(A,B,L)
46500 CF END
46600
46700 CC FUNCTION EEXP(X,Y)
46800 CC EEXP=X**Y
46900 CC END